from django.shortcuts import render

# Create your views here.
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.permissions import IsAuthenticated
from django_redis import get_redis_connection

from goods.models import SKU
from orders.serializer import PlaceOrderSerializer

"""
当用户点击结算的时候，会跳转到订单提交页面，这个页面只能登录用户访问
前端应该获取 商品列表数据，前端会发送ajax请求给后端

1.前端必须把用户信息传递过来jwt token　,设置权限
2.获取商品数据
    hash
    set
3.只需选中的商品信息
4.根据选中的商品ｉｄ,获取商品信息
5.对象列表需要序列化操作
6.返回响应

"""
class PlaceOrderView(APIView):
    permission_classes = [IsAuthenticated]  #只有登录用户才能访问
    def get(self,request):
        user = request.user
        #获取商品数据
        redis_conn = get_redis_connection('cart')
        sku_id_count = redis_conn.hgetall('cart_%'%user.id)
        selected_ids = redis_conn.smembers('cart_selected_%s'%user.id)
        #只需选中的商品信息
        selected_cart = {}
        for sku_id in selected_ids:
            selected_cart[int(sku_id)]=int(sku_id_count[sku_id])

        # 根据选中的商品ｉｄ, 获取商品信息
        skus = SKU.objects.filter(pk__in=selected_cart.keys())
        for sku in skus:
            sku.count = selected_cart[sku_id]

        freight=10
        serializer = PlaceOrderSerializer({'freight':freight,
                                           'skus':skus})

        return Response(serializer.data)















